home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- * Vidur Apparao <vidur@netscape.com> (original author)
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- #include "nsISupports.idl"
- #include "nsIWebServiceErrorHandler.idl"
-
- interface nsISchema;
- interface nsISchemaType;
- interface nsISchemaSimpleType;
- interface nsISchemaBuiltinType;
- interface nsISchemaListType;
- interface nsISchemaUnionType;
- interface nsISchemaRestrictionType;
- interface nsISchemaComplexType;
- interface nsISchemaParticle;
- interface nsISchemaModelGroup;
- interface nsISchemaAnyParticle;
- interface nsISchemaElement;
- interface nsISchemaAttributeComponent;
- interface nsISchemaAttribute;
- interface nsISchemaAttributeGroup;
- interface nsISchemaAnyAttribute;
- interface nsISchemaFacet;
-
- /**
- * The collection of loaded schemas. If a schema references other
- * schemas (generally through an import), these will be included
- * in the corresponding collection.
- */
- [scriptable, uuid(427c5511-941b-48c0-9abc-8ec9ea5d964b)]
- interface nsISchemaCollection : nsISupports {
- nsISchema getSchema(in AString targetNamespace);
- nsISchemaElement getElement(in AString name, in AString aNamespace);
- nsISchemaAttribute getAttribute(in AString name, in AString aNamespace);
- nsISchemaType getType(in AString name, in AString aNamespace);
- };
-
- [scriptable, uuid(5caaa64e-e191-11d8-842a-000393b6661a)]
- interface nsISchemaComponent : nsISupports {
- readonly attribute AString targetNamespace;
- void resolve(in nsIWebServiceErrorHandler aErrorHandler);
- void clear();
- };
-
- [scriptable, uuid(3c14a021-6f4e-11d5-9b46-000064657374)]
- interface nsISchema : nsISchemaComponent {
- /* Is this necessary? */
- readonly attribute AString schemaNamespace;
-
- readonly attribute PRUint32 typeCount;
- nsISchemaType getTypeByIndex(in PRUint32 index);
- nsISchemaType getTypeByName(in AString name);
-
- readonly attribute PRUint32 attributeCount;
- nsISchemaAttribute getAttributeByIndex(in PRUint32 index);
- nsISchemaAttribute getAttributeByName(in AString name);
-
- readonly attribute PRUint32 elementCount;
- nsISchemaElement getElementByIndex(in PRUint32 index);
- nsISchemaElement getElementByName(in AString name);
-
- readonly attribute PRUint32 attributeGroupCount;
- nsISchemaAttributeGroup getAttributeGroupByIndex(in PRUint32 index);
- nsISchemaAttributeGroup getAttributeGroupByName(in AString name);
-
- readonly attribute PRUint32 modelGroupCount;
- nsISchemaModelGroup getModelGroupByIndex(in PRUint32 index);
- nsISchemaModelGroup getModelGroupByName(in AString name);
-
- readonly attribute nsISchemaCollection collection;
- };
-
- [scriptable, uuid(3c14a022-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaType : nsISchemaComponent {
- const unsigned short SCHEMA_TYPE_SIMPLE = 1;
- const unsigned short SCHEMA_TYPE_COMPLEX = 2;
- const unsigned short SCHEMA_TYPE_PLACEHOLDER = 3;
-
- readonly attribute AString name;
- readonly attribute unsigned short schemaType;
- };
-
- [scriptable, uuid(3c14a023-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaSimpleType : nsISchemaType {
- const unsigned short SIMPLE_TYPE_BUILTIN = 1;
- const unsigned short SIMPLE_TYPE_LIST = 2;
- const unsigned short SIMPLE_TYPE_UNION = 3;
- const unsigned short SIMPLE_TYPE_RESTRICTION = 4;
-
- readonly attribute unsigned short simpleType;
- };
-
- [scriptable, uuid(3c14a024-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaBuiltinType : nsISchemaSimpleType {
- const unsigned short BUILTIN_TYPE_ANYTYPE = 1;
- const unsigned short BUILTIN_TYPE_STRING = 2;
- const unsigned short BUILTIN_TYPE_NORMALIZED_STRING = 3;
- const unsigned short BUILTIN_TYPE_TOKEN = 4;
- const unsigned short BUILTIN_TYPE_BYTE = 5;
- const unsigned short BUILTIN_TYPE_UNSIGNEDBYTE = 6;
- const unsigned short BUILTIN_TYPE_BASE64BINARY = 7;
- const unsigned short BUILTIN_TYPE_HEXBINARY = 8;
- const unsigned short BUILTIN_TYPE_INTEGER = 9;
- const unsigned short BUILTIN_TYPE_POSITIVEINTEGER = 10;
- const unsigned short BUILTIN_TYPE_NEGATIVEINTEGER = 11;
- const unsigned short BUILTIN_TYPE_NONNEGATIVEINTEGER = 12;
- const unsigned short BUILTIN_TYPE_NONPOSITIVEINTEGER = 13;
- const unsigned short BUILTIN_TYPE_INT = 14;
- const unsigned short BUILTIN_TYPE_UNSIGNEDINT = 15;
- const unsigned short BUILTIN_TYPE_LONG = 16;
- const unsigned short BUILTIN_TYPE_UNSIGNEDLONG = 17;
- const unsigned short BUILTIN_TYPE_SHORT = 18;
- const unsigned short BUILTIN_TYPE_UNSIGNEDSHORT = 19;
- const unsigned short BUILTIN_TYPE_DECIMAL = 20;
- const unsigned short BUILTIN_TYPE_FLOAT = 21;
- const unsigned short BUILTIN_TYPE_DOUBLE = 22;
- const unsigned short BUILTIN_TYPE_BOOLEAN = 23;
- const unsigned short BUILTIN_TYPE_TIME = 24;
- const unsigned short BUILTIN_TYPE_DATETIME = 25;
- const unsigned short BUILTIN_TYPE_DURATION = 26;
- const unsigned short BUILTIN_TYPE_DATE = 27;
- const unsigned short BUILTIN_TYPE_GMONTH = 28;
- const unsigned short BUILTIN_TYPE_GYEAR = 29;
- const unsigned short BUILTIN_TYPE_GYEARMONTH = 30;
- const unsigned short BUILTIN_TYPE_GDAY = 31;
- const unsigned short BUILTIN_TYPE_GMONTHDAY = 32;
- const unsigned short BUILTIN_TYPE_NAME = 33;
- const unsigned short BUILTIN_TYPE_QNAME = 34;
- const unsigned short BUILTIN_TYPE_NCNAME = 35;
- const unsigned short BUILTIN_TYPE_ANYURI = 36;
- const unsigned short BUILTIN_TYPE_LANGUAGE = 37;
- const unsigned short BUILTIN_TYPE_ID = 38;
- const unsigned short BUILTIN_TYPE_IDREF = 39;
- const unsigned short BUILTIN_TYPE_IDREFS = 40;
- const unsigned short BUILTIN_TYPE_ENTITY = 41;
- const unsigned short BUILTIN_TYPE_ENTITIES = 42;
- const unsigned short BUILTIN_TYPE_NOTATION = 43;
- const unsigned short BUILTIN_TYPE_NMTOKEN = 44;
- const unsigned short BUILTIN_TYPE_NMTOKENS = 45;
-
- readonly attribute unsigned short builtinType;
- };
-
- [scriptable, uuid(3c14a025-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaListType : nsISchemaSimpleType {
- readonly attribute nsISchemaSimpleType listType;
- };
-
- [scriptable, uuid(3c14a026-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaUnionType : nsISchemaSimpleType {
- readonly attribute PRUint32 unionTypeCount;
- nsISchemaSimpleType getUnionType(in PRUint32 index);
- };
-
- [scriptable, uuid(3c14a027-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaRestrictionType : nsISchemaSimpleType {
- readonly attribute nsISchemaSimpleType baseType;
- readonly attribute PRUint32 facetCount;
- nsISchemaFacet getFacet(in PRUint32 index);
- };
-
- [scriptable, uuid(3c14a028-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaComplexType : nsISchemaType {
- const unsigned short CONTENT_MODEL_EMPTY = 1;
- const unsigned short CONTENT_MODEL_SIMPLE = 2;
- const unsigned short CONTENT_MODEL_ELEMENT_ONLY = 3;
- const unsigned short CONTENT_MODEL_MIXED = 4;
-
- const unsigned short DERIVATION_EXTENSION_SIMPLE = 1;
- const unsigned short DERIVATION_RESTRICTION_SIMPLE = 2;
- const unsigned short DERIVATION_EXTENSION_COMPLEX = 3;
- const unsigned short DERIVATION_RESTRICTION_COMPLEX = 4;
- const unsigned short DERIVATION_SELF_CONTAINED = 5; // Restriction of ur-type
-
- readonly attribute unsigned short contentModel;
- readonly attribute unsigned short derivation;
- readonly attribute nsISchemaType baseType;
-
- // For complex types that are derivations of simple types or of
- // complex types that are themselves derivations of simple types
- // i.e. derivation is either DERIVATION_RESTRICTION_SIMPLE or
- // DERIVATION_EXTENSION_SIMPLE.
- readonly attribute nsISchemaSimpleType simpleBaseType;
-
- readonly attribute nsISchemaModelGroup modelGroup;
-
- readonly attribute PRUint32 attributeCount;
- nsISchemaAttributeComponent getAttributeByIndex(in PRUint32 index);
- nsISchemaAttributeComponent getAttributeByName(in AString name);
-
- readonly attribute boolean abstract;
-
- readonly attribute boolean isArray;
- readonly attribute nsISchemaType arrayType;
- readonly attribute PRUint32 arrayDimension;
- };
-
- [scriptable, uuid(3c14a029-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaParticle : nsISchemaComponent {
- const unsigned short PARTICLE_TYPE_ELEMENT = 1;
- const unsigned short PARTICLE_TYPE_MODEL_GROUP = 2;
- const unsigned short PARTICLE_TYPE_ANY = 3;
-
- const PRUint32 OCCURRENCE_UNBOUNDED = 0xFFFFFFFF;
-
- readonly attribute AString name;
- readonly attribute unsigned short particleType;
-
- readonly attribute PRUint32 minOccurs;
- readonly attribute PRUint32 maxOccurs;
- };
-
- [scriptable, uuid(3c14a02a-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaModelGroup : nsISchemaParticle {
- const unsigned short COMPOSITOR_ALL = 1;
- const unsigned short COMPOSITOR_SEQUENCE = 2;
- const unsigned short COMPOSITOR_CHOICE = 3;
-
- readonly attribute unsigned short compositor;
-
- readonly attribute PRUint32 particleCount;
- nsISchemaParticle getParticle(in PRUint32 index);
-
- // Get named element definition for a named element that is
- // part of this model group or part of a nested model group.
- nsISchemaElement getElementByName(in AString name);
- };
-
- [scriptable, uuid(3c14a02b-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaAnyParticle : nsISchemaParticle {
- const unsigned short PROCESS_STRICT = 1;
- const unsigned short PROCESS_SKIP = 2;
- const unsigned short PROCESS_LAX = 3;
-
- readonly attribute unsigned short process;
- readonly attribute AString namespace;
- };
-
- [scriptable, uuid(3c14a02c-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaElement : nsISchemaParticle {
- readonly attribute nsISchemaType type;
-
- readonly attribute AString defaultValue;
- readonly attribute AString fixedValue;
-
- readonly attribute boolean nillable;
- readonly attribute boolean abstract;
- };
-
- [scriptable, uuid(3c14a02d-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaAttributeComponent : nsISchemaComponent {
- const unsigned short COMPONENT_TYPE_ATTRIBUTE = 1;
- const unsigned short COMPONENT_TYPE_GROUP = 2;
- const unsigned short COMPONENT_TYPE_ANY = 3;
-
- readonly attribute AString name;
- readonly attribute unsigned short componentType;
- };
-
- [scriptable, uuid(3c14a02e-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaAttribute : nsISchemaAttributeComponent {
- const unsigned short USE_OPTIONAL = 1;
- const unsigned short USE_PROHIBITED = 2;
- const unsigned short USE_REQUIRED = 3;
-
- readonly attribute nsISchemaSimpleType type;
-
- readonly attribute AString defaultValue;
- readonly attribute AString fixedValue;
- readonly attribute unsigned short use;
- };
-
- [scriptable, uuid(3c14a02f-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaAttributeGroup : nsISchemaAttributeComponent {
- readonly attribute PRUint32 attributeCount;
- nsISchemaAttributeComponent getAttributeByIndex(in PRUint32 index);
- nsISchemaAttributeComponent getAttributeByName(in AString name);
- };
-
- [scriptable, uuid(3c14a030-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaAnyAttribute : nsISchemaAttributeComponent {
- const unsigned short PROCESS_STRICT = 1;
- const unsigned short PROCESS_SKIP = 2;
- const unsigned short PROCESS_LAX = 3;
-
- readonly attribute unsigned short process;
- readonly attribute AString namespace;
- };
-
- [scriptable, uuid(3c14a031-6f4e-11d5-9b46-000064657374)]
- interface nsISchemaFacet : nsISchemaComponent {
- const unsigned short FACET_TYPE_LENGTH = 1;
- const unsigned short FACET_TYPE_MINLENGTH = 2;
- const unsigned short FACET_TYPE_MAXLENGTH = 3;
- const unsigned short FACET_TYPE_PATTERN = 4;
- const unsigned short FACET_TYPE_ENUMERATION = 5;
- const unsigned short FACET_TYPE_WHITESPACE = 6;
- const unsigned short FACET_TYPE_MAXINCLUSIVE = 7;
- const unsigned short FACET_TYPE_MININCLUSIVE = 8;
- const unsigned short FACET_TYPE_MAXEXCLUSIVE = 9;
- const unsigned short FACET_TYPE_MINEXCLUSIVE = 10;
- const unsigned short FACET_TYPE_TOTALDIGITS = 11;
- const unsigned short FACET_TYPE_FRACTIONDIGITS = 12;
-
- const unsigned short WHITESPACE_PRESERVE = 1;
- const unsigned short WHITESPACE_REPLACE = 1;
- const unsigned short WHITESPACE_COLLAPSE = 1;
-
-
- readonly attribute unsigned short facetType;
- readonly attribute AString value;
- readonly attribute PRUint32 lengthValue; // For length, minLength & maxLength
- readonly attribute PRUint32 digitsValue; // For totalDigits & fractionDigits
- readonly attribute unsigned short whitespaceValue; // For whitespace only
- readonly attribute boolean isfixed;
- };
-